package com.seventeen.monster.redisson.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author seventeen
 */
@Target({java.lang.annotation.ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface DistributeLock {

    String lockPath();

    /**
     * 获取分布式锁的超时时间，默认为-1不设置超时时间
     */
    long timeout() default -1;

    /**
     * 获取锁后自动释放锁的时间，redis分布式锁有效
     */
    long leaseTime() default 30;

    /**
     * 分布式锁获取超时时间单位，默认为秒
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 未获取到锁，要执行的方法，方法签名和注解的方案一致
     */
    String notGetLockMethod() default "";
}